#include"SList.h"

void testSList1(){
    SListNode* phead=NULL;
    SListPushBack(&phead,0);
    SListPushBack(&phead,1);
    SListPushBack(&phead,2);
    SListPushBack(&phead,3);
    Print(phead); 
    SListPushFront(&phead,-3);
    SListPushFront(&phead,-2);
    SListPushFront(&phead,-1);
    Print(phead);
    SListPopBack(&phead);
    SListPopBack(&phead);
    SListPopBack(&phead);
    SListPopBack(&phead);
    SListPopBack(&phead);
    SListPopBack(&phead);
    SListPopBack(&phead);
    Print(phead);
    SListDestroy(&phead);

}
void testSList2(){
    SListNode* phead=NULL;
    SListPushBack(&phead,0);
    SListPushBack(&phead,1);
    SListPushBack(&phead,2);
    SListPushBack(&phead,3);
    Print(phead); 
    SListPopFront(&phead);
    SListPopFront(&phead);
    SListPopFront(&phead);
    Print(phead);
    SListDestroy(&phead);
}
void testSList3(){
    SListNode* phead=NULL;
    SListPushBack(&phead,0);
    SListPushBack(&phead,1);
    SListPushBack(&phead,2);
    SListPushBack(&phead,2);
    SListPushBack(&phead,3);
    SListPushBack(&phead,2);
    Print(phead);
    SListNode* tmp=phead;
    while( (tmp=SListFind(tmp,2) ) ){
      printf("%p:%d ",tmp,tmp->val);
      tmp=tmp->next;
    }printf("\n");
    SListDestroy(&phead);
}
void testSList4(){
    SListNode* phead=NULL;
    SListPushBack(&phead,0);
    SListPushBack(&phead,1);
    SListPushBack(&phead,2);
    SListPushBack(&phead,2);
    SListPushBack(&phead,3);
    SListInsertAfter( SListFind(phead,3),4);
    Print(phead); 
    SListEraseAfter(SListFind(phead,1));
    Print(phead);
    SListDestroy(&phead);
}
int main(){
    //testSList1();
    //testSList2();
    testSList3();
    testSList4();
    return 0;
}
